<?php
/**
 * Created by Administrator
 * User: 刘雄柱 Email:842939018@qq.com
 * Date: 2019/7/26
 * Time: 15:39
 * Info: 控制器介绍
 */

/*返回当前网站域名
 * @return string 当前域名,包括http
 * */
function get_domain()
{
    return $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'];
}

/*上传文件函数
 * @param $path 子目录 默认:空
 * @param $size 允许上传最大文件  默认4M
 * @param $name 表单的name值 默认:file
 * @param exts array 允许上传的后缀 不选择则默认好多
 * @return array();
 * 成功: code=1,path=路径
 * 失败: code=0,msg='失败原因','path'=''
 * */
function upload($path = '', $size = 1, $name = 'file', $exts = array())
{
    $exts = $exts ? $exts : array('jpg', 'gif', 'png', 'jpeg', 'AVI', 'mov', 'rmvb', 'rm', 'FLV', 'mp4', '3GP', 'zip', 'rar');
    $upload = new \Think\Upload();// 实例化上传类
    $upload->maxSize = 1048576 * (int)$size;// 设置附件上传大小,后面这个数代表M  AVI、mov、rmvb、rm、FLV、mp4、3GP
    $upload->exts = $exts;// 设置附件上传类型
    $upload->rootPath = 'Uploads/'; // 设置附件上传根目录
    $upload->savePath = $path ? $path . '/' : $path; // 设置附件上传（子）目录
    if (!is_dir($upload->rootPath . $upload->savePath)) {
        mkdir($upload->rootPath . $upload->savePath, 0777, 1); //如果目录不存在,级联创建
    }
    // 上传文件
    $info = $upload->upload();
    if (!$info) {// 上传错误提示错误信息
        $data['code'] = 0;
        $data['msg'] = $upload->getError();
    } else {// 上传成功
        $data['code'] = 1;
        $data['msg'] = '上传成功';
        $data['info'] = $info;
        $data['path'] = '/Uploads/' . $info[$name]['savepath'] . $info[$name]['savename'];
    }
    return $data;
}


/*生成二维码
 * @param $text    string  需要编码的内容 ,必选
 * @param $outfile string  输出的地址,包含文件名,可选
 * @param $level   int     纠错级别0~3
 * @param $siez    int     二维码像素大小
 * @param $margin  int     二维码边框距离
 * @param $saveandprint bool  是否保存并输出
 * @return 仅执行代码,参数不同,结果不同
 * */
function qrcode($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 1, $margin = 1, $saveandprint = false)
{
    require_once APP_PATH . 'Common/Common/phpqrcode/qrlib.php';
    QRcode::png($text, $outfile, $level, $size, $margin, $saveandprint);
}


/*删除文件 $filename
 * @param $filename
 * @return  void
 * */
function xunlink($filename = '')
{
    if (file_exists($filename) && strstr($filename, '..') === false) {  //文件检测:1,文件必须存在;2,文件必须不能包含上级,防止安全问题
        unlink($filename);
    }
}

/*视频生成图像   -> 依赖ffmpeg库,1,安装ffmpeg;2,compoer装库
 * @param $filename  视频路径
 * @param $savename  保存文件名 为空则在后面加jpg后缀
 * @param $suffix  后缀,默认:jpg 当不指定保存文件名时候生效
 * @param $prame  第几帧
 * @param string 保存的图片地址,失败抛出异常
 * */
function video_to_img($filename, $savename = '', $suffix = 'jpg', $param = 3)
{
    $ffmpeg = \FFMpeg\FFMpeg::create();               //创建对象
    $video = $ffmpeg->open($filename); //打开视频文件
    $savename = $savename ? $savename : $filename . '.' . $suffix;
    $video
        ->frame(\FFMpeg\Coordinate\TimeCode::fromSeconds($param))  //这里表示第几帧
        ->save($savename);      //保存的图片地址
    return $savename;
}

/*缩略图
 *@param $filename 图片地址
 * @param $savefile 保存地址
 * @param $width 宽 默认1000
 * @param $height 高 默认1000
 * @param $del_origin 是否删除原图 默认 false
 * @return viod
 * */
function img_to_thumb($filename, $savename, $width = 1000, $height = 1000, $del_origin = false)
{
    $img = new \Think\Image();
    $img->open($filename)->thumb($width, $height);
}